package beans;

import bc.PlataformaDelegate;
import edu.upn.sigemfi.ope.be.Plataforma;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

public class PlataformaController {

    private PlataformaDelegate delegate;
    private Plataforma plataforma;
    private String criterio;

    public PlataformaController() {
        delegate = new PlataformaDelegate();
    }

    public String getCriterio() {
        return criterio;
    }

    public void setCriterio(String criterio) {
        this.criterio = criterio;
    }

    public Plataforma getPlataforma() {
        return plataforma;
    }

    public void setPlataforma(Plataforma plataforma) {
        this.plataforma = plataforma;
    }

    public String nuevo() {
        plataforma = new Plataforma();
        return "registrar";
    }

    public String edita() {
        return "editar";
    }

    public String cancelar() {
        plataforma = null;
        return "volver";
    }

    public String crear() {
        try {
            if (plataforma != null) {
                delegate.crear(plataforma);
                mostrarMensaje("Exito", "El registro del plataforma se realizo exitosamente.", FacesMessage.SEVERITY_INFO);
            } else {
                mostrarMensaje("Error", "Asegurese de haber creado una plataforma", FacesMessage.SEVERITY_ERROR);
                plataforma = new Plataforma();
            }
        } catch (Exception e) {
            mostrarMensaje(e.getMessage(), e.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
        return "volver";
    }

    public String editar() {
        try {
            if (plataforma != null) {
                delegate.editar(plataforma);
                mostrarMensaje("Exito", "La plataforma " + plataforma.getNombre() + " fue actualizada.", FacesMessage.SEVERITY_INFO);
            } else {
                mostrarMensaje("Error", "Asegurese de haber seleccionado una plataforma", FacesMessage.SEVERITY_ERROR);
                plataforma = new Plataforma();
            }
        } catch (Exception e) {
            mostrarMensaje(e.getMessage(), e.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
        return "volver";
    }

    public List<Plataforma> getPlataformas() {
        List<Plataforma> plataformas = null;
        try {
            plataformas = delegate.getPlataformas();
        } catch (Exception e) {
            mostrarMensaje("Error", "No existen Plataformas actualmente", FacesMessage.SEVERITY_ERROR);
        }
        return plataformas;
    }

    public String HabilitarDeshabilitar() {
        try {
            if (!plataforma.getEstado()) {

                plataforma.setEstado(true);
                delegate.editar(plataforma);
                mostrarMensaje("Editado", "Plataforma " + plataforma.getIdPlataforma() + " ha sido habilitada", FacesMessage.SEVERITY_INFO);
            } else {
                plataforma.setEstado(false);
                delegate.editar(plataforma);
                mostrarMensaje("Editado", "Plataformas " + plataforma.getIdPlataforma() + " ha sido deshabilitada", FacesMessage.SEVERITY_INFO);
            }
        } catch (Exception e) {
            mostrarMensaje("Error", "No se pudo Habilitar la plataforma", FacesMessage.SEVERITY_ERROR);
        }
        return "listar";
    }

//    public SelectItem[] getPlataformaSI() {
//        SelectItem[] select = null;
//        try {
//            List<Plataforma> lista = getPlataformas();
//            if (lista != null) {
//                select = new SelectItem[lista.size() + 1];
//                int i = 0;
//                select[i++] = new SelectItem(null, "Seleccione una Plataforma");
//                for (Plataforma go : lista) {
//                    select[i++] = new SelectItem(go, go.getIdPlataforma().toString());
//                }
//            } else {
//                select = new SelectItem[1];
//                select[0] = new SelectItem(null, "No se encontraron Plataformas");
//            }
//        } catch (Exception e) {
//            mostrarMensaje(e.getMessage(), e.getMessage(), FacesMessage.SEVERITY_ERROR);
//            select = new SelectItem[1];
//            select[0] = new SelectItem(null, "Error al consultar los datos");
//        }
//        return select;
//    }

    //Metodo para mostrar mensajes en la pagina
    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

    public Plataforma buscar(Long id) throws Exception {
        return delegate.buscar(id);
    }
}
